﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace FrbaCommerce.ABM_Rol
{
    public partial class FormAltaRol : Form
    {
        

        private struct Funcionalidad
        {
            public int id;
            public string nombre  {get; set;}
        };

        public FormAltaRol()
        {
            InitializeComponent();

            SqlConnection con = Program.obtenerConexion();

            SqlCommand leerFuncionalidades = new SqlCommand("SELECT func_id, func_nombre from Monkey_Coders.Funcionalidades", con);
            SqlDataReader lector = leerFuncionalidades.ExecuteReader();

            if (lector.HasRows)
            {
                while (lector.Read())
                {
                    Funcionalidad func = new Funcionalidad();
                    func.id = Convert.ToInt32(lector["func_id"]);
                    func.nombre = lector["func_nombre"].ToString();
                    comboBoxFuncionalidades.Items.Add(func);
                }
            }

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = Program.obtenerConexion();
            //TODO: Hacer comprobaciones de que el Rol no exista

            SqlCommand altaRol = new SqlCommand("INSERT INTO Monkey_Coders.Roles (rol_nombre, rol_habilitado) OUTPUT INSERTED.rol_id VALUES (@Nombre, @Habilitado)", con);
            altaRol.Parameters.Add("Nombre", SqlDbType.VarChar, 255).Value = textBoxNombre.Text;
            altaRol.Parameters.Add("Habilitado", SqlDbType.Bit).Value = 1;

            Int32 newID = Convert.ToInt32(altaRol.ExecuteScalar());

            //Agrego las funcionalidades al Rol

            foreach (Funcionalidad func in listBoxFuncionalidades.Items)
            {
            SqlCommand altaFuncionalidadesRol = new SqlCommand("INSERT INTO Monkey_Coders.rol_funcionalidad (rf_rol_id, rf_func_id) VALUES (@idrol, @idfunc)",con);
            altaFuncionalidadesRol.Parameters.Add("idrol", SqlDbType.Int, 18).Value = newID;
            altaFuncionalidadesRol.Parameters.Add("idfunc", SqlDbType.Int, 18).Value = func.id;
            altaFuncionalidadesRol.ExecuteNonQuery();
            }

            MessageBox.Show("Rol dado de Alta", "Alta Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();

        }
        

        private void buttonAdd_Click(object sender, EventArgs e)
        {
            if (comboBoxFuncionalidades.SelectedItem != null && !listBoxFuncionalidades.Items.Contains(comboBoxFuncionalidades.SelectedItem))
            listBoxFuncionalidades.Items.Add(comboBoxFuncionalidades.SelectedItem);
        }

        private void buttonRmv_Click(object sender, EventArgs e)
        {
            if (listBoxFuncionalidades.SelectedItem != null)
            listBoxFuncionalidades.Items.Remove(listBoxFuncionalidades.SelectedItem);
        }


    }
}
